Programmable logic devices (PLDs), such as field programmable gate arrays (FPGAs) or complex programmable logic devices (CPLDs), may be configured to provide user-defined features. PLDs typically include various components, such as programmable logic cells, memory cells, digital signal processing cells, input/output cells, and other components. The PLD components may be interconnected through signal paths provided by routing resources of the PLD to implement a desired circuit design.
However, PLDs typically have a limited supply of routing resources available to provide signal paths through the PLD to a target component of the PLD. This differs from conventional application-specific integrated circuits (ASICs) in which typically any desired signal path may be custom-manufactured for a particular application.
Unfortunately, existing approaches to PLD signal path routing often fail to provide efficient signal paths. For example, a conventional maze routing approach will typically consider signals one at a time. After a signal has been assigned to a routing resource, the routing resource will not be considered as a possible routing resource for other signals. As a result, the order in which signals are selected and routing resources are assigned may significantly impact the availability of various routing resources and thus prevent routing resources from being used efficiently to provide signal paths that meet the timing requirements of a particular design. If signals are unable to be routed or if timing violations occur, then “ripup” and “reroute” techniques may be used to remove routed signal paths and attempt to reroute them through routing resources of the PLD. Such techniques are inefficient and can significantly increase the time and processing needed to determine signal routings for the PLD.
In another example, a negotiation-based routing approach may be used to route multiple signals using the same routing resource and then resolve conflicts between commonly-routed signals based on priorities associated with the signals. Although this negotiation-based routing approach may provide improved performance over the above-described maze routing approach, this approach nevertheless does not provide sufficient flexibility in the rerouting of signals to different destinations. In particular, such an approach does not permit signals to be commonly-routed to the same pin of a reconfigurable component of the PLD. This limitation can inhibit the overall effectiveness of such an approach. Accordingly, there is a need for an improved approach to the routing of signals in PLDs.